package org.example.linkedList;

import org.junit.Test;

import java.util.Arrays;

/**
 * @Auther: wangbw
 * @Date:2020/12/24
 * @Description: org.example.linkedList
 * @version: 1.0
 */
public class AllQuickSort {
    //默认数组非空且至少有一个元素。
    public int[] arr = create();
    public int[] copy = arr.clone();
    /**
     * 从2端扫描交换的方式。
     */
    @Test
    public void sort1(){
        Arrays.sort(copy);
        print(copy);
        sortSwap2point(arr, 0, arr.length - 1);
        print(arr);
    }

    private void sortSwap2point(int[] arr, int start, int end) {
        int mid = partSwap2point(arr, start, end);
        sortSwap2point(arr, start, mid - 1);
        sortSwap2point(arr, mid + 1, end);
    }

    private int partSwap2point(int[] arr, int start, int end) {
        int i = start;
        int j = end + 1;
        int pre = arr[start];
        while(i <= j){
            while (i<=j && arr[i] < pre)
                i++;
        }
        return 1;
    }

    /**
     * 从2端扫描挖坑的方式
     */
    @Test
    public void sort2(){
        print(arr);
    }

    /**
     * 从1端扫描的方式
     */
    @Test
    public void sort3(){
        print(arr);
    }

    /**
     * 3向切分的方式
     */
    @Test
    public void sort4(){
        print(arr);
    }

    /**
     * 双轴快速排序
     */
    @Test
    public void sort5(){
        print(arr);
    }

    public static void swap(int[] A, int i, int j){
        int temp = A[i];
        A[i] = A[j];
        A[j] = temp;
    }

    public static void print(int[] arr) {
        System.out.println("result:" + Arrays.toString(arr));
    }

    public static int[] create(){
        int[] arr = new int[]{4, 5, 3, 2, 8, 7};
        print(arr);
        return  arr;
    }
}
